<?php

\vendor\illuminate\container\Container.php
$app->instances 数组。

目前的理解是，这个数组内存放的是单例。


容器中，key 和 对应的实例，但实例并不仅仅是对象，还有可能是字符串。
  protected function bindPathsInContainer()
  {
      $this->instance('path', $this->path());// 第二个参数就是返回的字符串；
      $this->instance('path.base', $this->basePath());
      $this->instance('path.lang', $this->langPath());
      $this->instance('path.config', $this->configPath());
      $this->instance('path.public', $this->publicPath());
      $this->instance('path.storage', $this->storagePath());
      $this->instance('path.database', $this->databasePath());
      $this->instance('path.resources', $this->resourcePath());
      $this->instance('path.bootstrap', $this->bootstrapPath());
  }
  当然，不仅仅就这些。


什么时候放入 request 的；
  'request' => \Illuminate\Http\Request 的实例；
  文件 \public\index.php 中
  $app = require_once __DIR__.'/../bootstrap/app.php';
  此时还没有。

  $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
  此时还没有。

  $response = $kernel->handle(
      $request = Illuminate\Http\Request::capture()
  );
  这里就有了。

  尝试
  $request = Illuminate\Http\Request::capture();
  dump($app->instances['request']);
  exit;
  发现没有。
  这说明是在 $kernel->handle() 方法内加入进去的。

  具体流程：
  $kernel->handle() 此方法来自继承的 Illuminate\Foundation\Http\Kernel：  
    public function handle($request)
    {
        try {
            $request->enableHttpMethodParameterOverride();

            $response = $this->sendRequestThroughRouter($request);
        } catch (Exception $e) {
            $this->reportException($e);

            $response = $this->renderException($request, $e);
        } catch (Throwable $e) {
            $this->reportException($e = new FatalThrowableError($e));

            $response = $this->renderException($request, $e);
        }

        $this->app['events']->fire('kernel.handled', [$request, $response]);

        return $response;
    }
  内部调用 $response = $this->sendRequestThroughRouter($request);
    protected function sendRequestThroughRouter($request)
    {
        // 看到第一行就添加到 $app->instances 数组中了；
        $this->app->instance('request', $request);

        Facade::clearResolvedInstance('request');

        $this->bootstrap();

        return (new Pipeline($this->app))
                    ->send($request)
                    ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
                    ->then($this->dispatchToRouter());
    }




